
#include "Shm.hpp"
int main()
{

    ::umask(0);
    shm.CreateShm();
    shm.AttachShm();
    shm.Write();
    


    // ::umask(0);
    // int shmid = shm.CreateShm();
    // char* shmaddr = (char*)shm.AttachShm(shmid);


    // int index = 0;
    // char ch = 'a';
    // while(true)
    // {
    //     shmaddr[index++] = ch++;
    //     sleep(5);
    // }

    // shm.DetachShm(shmaddr);
    // shm.DeleteShm(shmid);



    // //1.创建shm
    // key_t key = ftok(gpathname,gproj_id);
    // // std::cout<<"k:"<<key<<std::endl;
    // printf("k:0x%x\n",key);
    // int shmid = ::shmget(key,gsize,IPC_CREAT|IPC_EXCL|gmode);
    // if(shmid<0)
    // {
    //     std::cout<<"shmid error"<<std::endl;
    //     return 1;
    // }
    // std::cout<<"shmid:"<<shmid<<std::endl;

    // //挂接到自己进程的地址空间
    // char* shmaddr = (char*)::shmat(shmid,nullptr,0);
    // if(shmaddr==(void*)-1)
    // {
    //     std::cout<<"attach error"<<std::endl;
    //     return -1;
    // } 
    // std::cout<<"shmaddr:"<<(void*)shmaddr<<std::endl;

    //通信
    // int index = 0;
    // char ch = 'a';
    // while(true)
    // {
    //     shmaddr[index++] = ch++;
    //     sleep(5);
    // }


    // //sleep(20);
    // //去关联
    // int ret = ::shmdt(shmaddr);
    // if(ret<0)
    // {
    //     std::cout<<"detach error"<<std::endl;
    //     return -1;
    // }
    // std::cout<<"detach success"<<std::endl;
    // //删除
    // int ret1 = ::shmctl(shmid,IPC_RMID,nullptr);
    // if(ret1<0)
    // {
    //     std::cout<<"delete error"<<std::endl;
    // }
    // std::cout<<"delete success"<<std::endl;
    return 0;
}